package com.exercise.utils;

import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @Description: 关于字符串操作的一些工具方法
 * @Date: 2019/11/13 13:47
 * @author: xfei
 */
public class StringUtils {

    /**
     * (方法还没有实现)
     * @param prefix 需要的前缀
     * @param number 生成的UUID的位数
     * @exception: 生成唯一标识
     *              通过时间复杂度，空间复杂度
     * @date: 2019/11/13 16:25
     * @return: java.lang.String
     */
    public static String generateUUID(String prefix, int number) {
        String uuid = UUID.randomUUID().toString();
        if (isNotEmpty(prefix)) {
            uuid = prefix + uuid;
        }
        return uuid;
    }

    /**
     *
     * @param phoneNumber 电话号码
     * @exception: 判断字符串是否为手机号码
     * @date: 2019/11/13 16:21
     * @return: boolean
     */
    public static boolean checkPhoneNumber(String phoneNumber) {
        String regx = "1(3|5|7|8|4|9)\\d{9}";
        Pattern pattern = Pattern.compile(regx);
        Matcher matcher = pattern.matcher(phoneNumber);
        if (matcher.matches()) {
            return true;
        }
        return false;
    }

    /**
     *
     * @param param 输入参数
     * @exception: 判读字符串是否为数字
     * @date: 2019/11/13 15:57
     * @return: boolean
     */
    public static boolean isNumber(String param) {
        String regx = "-?[0-9]+(\\.[0-9]+)?";
        Pattern pattern = Pattern.compile(regx);
        Matcher matcher = pattern.matcher(param);
        if (matcher.matches()) {
            return true;
        }
        return false;
    }

    /**
     *
     * @param param 目标字符串
     * @param source 需要替换的部位
     * @param replace 替换后的部位
     * @exception: 字符串替换
     * @date: 2019/11/13 15:37
     * @return: java.lang.String
     */
    public static String replace(String param, String source, String replace) {
        if (isEmpty(param)) {
            return "";
        }
        return param.replace(source, replace);
    }

    /**
     *
     * @param param 目标字符串
     * @param start 开始位置
     * @exception: 字符串截取（指定位置到末尾）
     * @date: 2019/11/13 14:53
     * @return: java.lang.String
     */
    public static String substring(String param, int start) {
        if (isEmpty(param)) {
            return "";
        }
        return param.substring(start);
    }

    /**
     *
     * @param param 目标字符串
     * @param start 开始位置
     * @param end 结束位置
     * @exception: 字符串截取（指定开始位置到指定结束位置）
     * @date: 2019/11/13 14:51
     * @return: java.lang.String
     */
    public static String substring(String param, int start, int end) {
        if (isEmpty(param)) {
            return "";
        }
        return param.substring(start, end);
    }

    /**
     *
     * @param param 输入参数
     * @exception: 去除字符串前后空格
     * @date: 2019/11/13 14:18
     * @return: java.lang.String
     */
    public static String trim(String param) {
        return param == null ? "" : param.trim();
    }

    /**
     *
     * @param param 输入参数
     * @exception: 判断字符串不为空
     *              凡是字符串为null、空或者为字符null，统一认为是空字符串
     * @date: 2019/11/13 13:59
     * @return: boolean
     */
    public static boolean isNotEmpty(String param) {
        if (param != null && !param.trim().equals("")
                && !param.trim().equals(Contant.STRING_NULL)) {
            return true;
        }
        return false;
    }

    /**
     *
     * @param param 输入参数
     * @exception: 判断字符串是否为空
     *              凡是字符串为null、空或者为字符null，统一认为是空字符串
     * @date: 2019/11/13 13:56
     * @return: boolean
     */
    public static boolean isEmpty(String param) {
        if (param != null && !param.trim().equals("")
                && !param.trim().equals(Contant.STRING_NULL)) {
            return false;
        }
        return true;
    }
}
